package com.example.commons.core.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单权限表 sys_menu
 *
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SystemMenu extends BaseEntity {
    /**
     * 菜单ID
     */
    @TableId(type = IdType.AUTO)
    private Long menuId;

    /**
     * 路由路径
     */
    private String path;

    /**
     * 路由名称
     */
    private String name;

    /**
     * 组件路径
     */
    private String component;

    /**
     * 路由重定向，有子集 children 时
     */
    private String redirect;

    /**
     * 显示顺序
     */
    private Integer sort;

    /**
     * 路由参数json格式
     */
    private String meta;

    /**
     * 菜单名称
     */
    private String title;

    /**
     * 外链/内嵌时链接地址（http:xxx.com），开启外链条件，`1、isLink: 链接地址不为空`
     */
    private String isLink;

    /**
     * 是否隐藏
     */
    private Boolean isHide;

    /**
     * 是否缓存
     */
    private Boolean isKeepAlive;

    /**
     * 是否固定
     */
    private Boolean isAffix;

    /**
     * 是否内嵌，开启条件，`1、isIframe:true 2、isLink：链接地址不为空`
     */
    private Boolean isIframe;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 父菜单名称
     */
    private String parentName;
    /**
     * 父菜单ID
     */
    private String parentId;

    /**
     * 子菜单
     */
    @TableField(exist = false)
    private List<SystemMenu> children = new ArrayList<SystemMenu>();

}
